package v1

import (
	"github.com/gogf/gf/v2/frame/g"
)

// 文件/目录信息结构体
type FileInfo struct {
	Name         string `json:"name" description:"名称"`
	Path         string `json:"path" description:"完整路径"`
	IsDir        bool   `json:"isDir" description:"是否目录"`
	Size         int64  `json:"size" description:"大小(字节)"`
	ModTime      string `json:"modTime" description:"修改时间"`
	CreationTime string `json:"creationTime" description:"创建时间"`
}

// DistributeFilesGetDirListReq 获取根目录列表请求
type DistributeFilesGetDirListReq struct {
	g.Meta    `method:"get" path:"/clusters/distribute-files/dir-list" summary:"获取根目录列表" tags:"集群文件分发"`
	ServerKey string `v:"required#服务器标识不能为空" json:"serverKey" description:"服务器唯一标识"`
}

// DistributeFilesGetSubDirListReq 获取子目录列表请求
type DistributeFilesGetSubDirListReq struct {
	g.Meta    `method:"get" path:"/clusters/distribute-files/sub-dir-list" summary:"获取子目录列表" tags:"集群文件分发"`
	ServerKey string `v:"required#服务器标识不能为空" json:"serverKey" description:"服务器唯一标识"`
	Path      string `v:"required#目录路径不能为空" json:"path"`
}

// DistributeFilesDeleteDirReq 删除目录请求
type DistributeFilesDeleteDirReq struct {
	g.Meta    `method:"delete" path:"/clusters/distribute-files/dir" summary:"删除目录" tags:"集群文件分发"`
	ServerKey string `v:"required#服务器标识不能为空" json:"serverKey" description:"服务器唯一标识"`
	Path      string `v:"required#目录路径不能为空" json:"path"`
}

// DistributeFilesGetDirListRes 获取根目录列表响应
type DistributeFilesGetDirListRes struct {
	List []*FileInfo `json:"list" description:"目录列表"`
}

// DistributeFilesGetSubDirListRes 获取子目录列表响应
type DistributeFilesGetSubDirListRes struct {
	List []*FileInfo `json:"list" description:"子目录/文件列表"`
}

// DistributeFilesDeleteDirRes 删除目录响应
type DistributeFilesDeleteDirRes struct {
	Success bool `json:"success" description:"是否成功"`
}
